package org.example.common.core.domain.model;

import lombok.Data;

import java.io.Serializable;
import java.util.Map;

@Data
public class LoginModel implements Serializable {

    /**
     * 此次登录的客户端设备类型 
     */
    public String device;

    /**
     * 指定此次登录 token 有效期，单位：秒 （如未指定，自动取全局配置的 timeout 值）
     */
    public Long timeout;

    /**
     * 扩展信息（只在jwt模式下生效）
     */
    public Map<String, Object> extraData;

    /**
     * 预定Token（预定本次登录生成的Token值）
     */
    public String token;


    private String grantUser;


    /**
     * @return 此次登录的客户端设备类型
     */
    public String getDevice() {
        return device;
    }

    /**
     * @param device 此次登录的客户端设备类型
     * @return 对象自身
     */
    public LoginModel setDevice(String device) {
        this.device = device;
        return this;
    }


    /**
     * @return 指定此次登录 token 有效期，单位：秒
     */
    public Long getTimeout() {
        return timeout;
    }

    /**
     * @param timeout 指定此次登录 token 有效期，单位：秒 （如未指定，自动取全局配置的 timeout 值）
     * @return 对象自身
     */
    public LoginModel setTimeout(long timeout) {
        this.timeout = timeout;
        return this;
    }
    /**
     * @return 扩展信息（只在jwt模式下生效）
     */
    public Map<String, Object> getExtraData() {
        return extraData;
    }
    /**
     * @param extraData 扩展信息（只在jwt模式下生效）
     * @return 对象自身
     */
    public LoginModel setExtraData(Map<String, Object> extraData) {
        this.extraData = extraData;
        return this;
    }
    /**
     * @return 预定Token（预定本次登录生成的Token值）
     */
    public String getToken() {
        return token;
    }
    /**
     * @param token 预定Token（预定本次登录生成的Token值）
     * @return 对象自身
     */
    public LoginModel setToken(String token) {
        this.token = token;
        return this;
    }

    /**
     * 静态方法获取一个 LoginModel 对象
     * @return LoginModel 对象
     */
    public static LoginModel create() {
        return new LoginModel();
    }
    
}
